package com.chapter2.sort;

import java.util.Arrays;
import java.util.Random;

import org.junit.Test;

/** 
 * @ClassName: Test 
 * @Description: 测试用例
 * @author minjun minjun@bw30.com
 * @date 2015-2-13 下午11:11:49 
 *  
 */
public class TestSort {
	
	@Test
	public void testSort(){
		int[] array=
//				{2,1};
				{3,1,5,2,4,3,1,7,6,10,9,7};
//				getArray();
//				getManySameArray();
//				getOrderedArray();
		Sortable s=
//				new SelectionSort();//选择爬行
//				new InsertionSort();//插入排序
//				new BubbleSort();//冒泡排序
//				new HeapSort();//堆排序
//				new ShellSort();//希尔排序
//				new MergeSortUp2Down();//归并排序--jdk中Arrays.sort(Object[] o)使用的排序方式
//				new MergeSortDown2Up();
//				new QuickSort();//快速排序--jdk中Arrays.sort(包含基本数据类型的数组)使用的排序方式
				new Quick3Way();//快速排序--三向切分
		SortApp app=new SortApp(s, array);
		app.sort();
		app.confirmSorted();
		app.print();
	}
	
	@Test
	public void testSelect(){
		int[] array=getArray();
		System.out.println(new SelectionAlgorithums().select(array, 0));
	}

	/** 
	* @Title: getArray 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @return    设定文件 
	* @return int[]    返回类型 
	* @throws 
	*/ 
	private int[] getArray() {
		int count=10000;
		Random random=new Random();
		int[] array=new int[count];
		for(int i=0;i<count;i++){
			array[i]=random.nextInt(count);
		}
		return array;
	}
	
	@SuppressWarnings("unused")
	private int[] getOrderedArray(){
		int count=10000;
		int[] array=new int[count];
		for(int i=0;i<count;i++){
			array[i]=i;
		}
		return array;
	}
	@SuppressWarnings("unused")
	private int[] getManySameArray(){
		int count=50000;
		int[] array=new int[count];
		for(int i=0;i<count;i++){
			array[i]=2000;
		}
		return array;
	}
	
	@Deprecated
	public void jdkSort(){
		Arrays.sort(new int[10]);
		Arrays.sort(new Object[10]);
	}
	
	@Test
	public void testShuffle(){
		int[] array={1,2,3,4,5};
		new ShuffleImpl().randomShuffle(array);
		System.out.println(Arrays.toString(array));
	}
}
